May 24, 2021
개발자 면접질문과 답변들. 더 많은 내용은 깃허브 저장소에서 확인할 수 있습니다 (https://github.com/jeonyeohun/GetReadyForInterview)
void bubble_sort(vector<int> & list){
for (int i = 0 ; i < list.size() ; i++){
for (int j = 0 ; j < list.size() - i - 1 ; j++){
if(list[j] > list[j + 1]){
swap (list[j], list[j + 1]);
}
}
}
}로직(오름차순)
시간복잡도
정렬 형태
void selection_sort (vector<int> & list){
for (int i = 0 ; i < list.size() ; i++){
for (int j = 0 ; j < list.size() ; j++){
if (list[i] < list[j]){
swap(list[i], list[j]);
}
}
}
}로직(오름차순)
시간 복잡도
정렬 형태
void insertion_sort (vector<int> & list){
int i, j;
for (i = 1 ; i < list.size() ; i++){
int current = list[i];
for (j = i - 1 ; j >= 0 ; j--){
if(list[j] > current){
list[j + 1] = list[j];
}
else{
break;
}
}
list[j + 1] = current;
}
}로직
시간 복잡도
정렬 형태
void merge (vector<int> & list, int left, int mid, int right){
vector<int> sorted_list(list.size());
int i = left, j = mid+1, idx = left;
while(i <= mid && j <= right){
if (list[i] <= list[j]){
sorted_list[idx++] = list[i++];
}
else{
sorted_list[idx++] = list[j++];
}
}
while(i <= mid){
sorted_list[idx++] = list[i++];
}
while(j <= right){
sorted_list[idx++] = list[j++];
}
for (int l = left ; l <= right ; l++){
list[l] = sorted_list[l];
}
}
void partition (vector<int> & list, int left, int right){
int mid;
if (left < right){
mid = (left + right) / 2;
partition(list, left, mid);
partition(list, mid+1, right);
merge(list, left, mid, right);
}
}로직
시간 복잡도
정렬 형태
void quick_sort (vector<int> & list, int head, int tail){
if (head >= tail) return;
int pivot = head;
int left = pivot + 1;
int right = tail;
while(left <= right){
while(left <= tail && list[left] <= list[pivot]){
left++;
}
while(right > head && list[right] >= list[pivot]){
right--;
}
if (left > right){
swap(list[pivot], list[right]);
}
else{
swap(list[right], list[left]);
}
}
quick_sort(list, head, right - 1);
quick_sort(list, right + 1, tail);
}로직
시간 복잡도
정렬 형태
int fibonacci (int n){
if (n < 2){
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}int memo[100] = {0,};
int fibonacci (int n){
if (n < 2){
return n;
}
if (memo[n]) return memo[n];
return memo[n] = fibonacci(n - 1) + fibonacci(n - 2);
}int fibonacci (int n){
int dp[n];
dp[1] = 1, dp[2] = 1;
for (int i = 3 ; i <= n ; i++){
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}